package com.sparrow.source.common.enums;
/**
 * 2XX 一般代表服务器成功处理请求
 * 3XX 一般代表重定向
 * 4XX 一般是客户端请求的问题
 * 5XX 一般是服务器问题
 */
public enum ResultEnum {

    /**
     * 请求已成功，请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态
     */
    SUCCESS("OK",200),
    /**
     * 服务端已接受该请求
     */
    ACCEPTED("Accepted",202),
    /**
     * 没有内容
     */
    NO_CONTENT("No Content",204),
    /**
     *错误的请求
     */
    BAD_REQUEST("Bad Request",400),
    /**
     * 无资源访问权限
     */
    UNAUTHORIZED("Unauthorized",401),
    /**
     * Forbidden 接口限流使用这个返回，表示服务器已经理解请求，但是拒绝执行它
     */
    FORBIDDEN("Forbidden",403),
    /**
     * 不可接受
     */
    NOT_ACCEPTABLE("Not Acceptable",406),
    /**
     * 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送
     */
    REQUEST_TIMEOUT("Request Timeout",408),
    /**
     * 由于和被请求的资源的当前状态之间存在冲突，请求无法完成。这个代码只允许用在这样的情况下才能被使用：用户被认为能够解决冲突，并且会重新提交新的请求。该响应应当包含足够的信息以便用户发现冲突的源头
     */
    CONFLICT("Conflict",409),
    /**
     * 被请求的资源在服务器上已经不再可用，而且没有任何已知的转发地址
     */
    GONE("Gone",410),
    /**
     * 前提条件失败
     */
    PRECONDITION_FAILED("Precondition Failed",412),
    /**
     *不支持的媒体类型
     */
    UNSUPPORTED_MEDIA_TYPE("Unsupported Media Type",415),
    /**
     * 从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围
     */
    TOO_MANY_CONNECTIONS("Too Many Connections",421),
    /**
     * 请求格式正确，但是由于含有语义错误，无法响应
     */
    UNPROCESSABLE_ENTITY("Unprocessable Entity",422),
    /**
     * 当前资源被锁定
     */
    LOCKED("Locked",423),
    /**
     * 由于之前的某个请求发生的错误，导致当前请求失败
     */
    FAILED_DEPENDENCY("Failed Dependency",424),
    /**
     * 请求中未携带token，且要访问的资源需要验证token
     */
    MISSING_TOKEN("Missing Token",461),
    /**
     * Token失效
     */
    TOKEN_INVALID("Token Invalid",462),
    /**
     * 服务器遇到了一个未曾预料的状况，导致了它无法完成对请求的处理。一般来说，这个问题都会在服务器端的源代码出现错误时出现
     */
    INTERNAL_SERVER_ERROR("Internal Server Error",500),
    /**
     * 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法，并且无法支持其对任何资源的请求
     */
    NOT_IMPLEMENTED("Not Implemented",501),
    /**
     *作为网关或者代理工作的服务器尝试执行请求时，从上游服务器接收到无效的响应
     */
    BAD_GATEWAY("Bad Gateway",502),
    /**
     *由于临时的服务器维护或者过载，服务器当前无法处理请求。这个状况是临时的，并且将在一段时间以后恢复。如果能够预计延迟时间，那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息，那么客户端应当以处理500响应的方式处理它。
     */
    SERVICE_UNAVAILABLE("Service Unavailable",503),
    /**
     *作为网关或者代理工作的服务器尝试执行请求时，未能及时从上游服务器（URI标识出的服务器，例如HTTP、FTP、LDAP）或者辅助服务器（例如DNS）收到响应。
     */
    GATEWAY_TIMEOUT("Gateway Timeout",504);


    private String desc;
    private Integer code;

    ResultEnum(String desc, Integer code) {
        this.desc = desc;
        this.code = code;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
}
